/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package funciones;
/**
 *
 * @author Jesus Ruiz Oliva
 */
import java.io.IOException;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMail {
      
    private String mail;
    private String password;    
    private Properties props ;//se encarga de almacenar las propiedades de la conexión que vamos a establecer con el servidor de correo Saliente SMTP.
    private Multipart mp; //
    private BodyPart texto;//Texto del mensaje
    private MimeBodyPart adjunto;//fichero adjunto
    
    SendMail(){
        mail="";
        password="";
        props = new Properties();
        mp = new MimeMultipart();
        texto = new MimeBodyPart();
        adjunto = new MimeBodyPart();
    }
    public void setMail(String mail){
        this.mail = mail;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public void setFicheroAdjunto(String ruta) throws MessagingException, IOException {
        adjunto.attachFile(ruta);
        mp.addBodyPart(adjunto);        
    }
    public void setTextoMensaje(String texto) throws MessagingException{
        this.texto.setText(texto);
        mp.addBodyPart(this.texto);
    }
    public void enviarMail(String mailTo,String asunto) {
        //indicamos que vamos a usar smtp y el servidor de gmail
	props.put("mail.smtp.host", "smtp.gmail.com");  
        //especificamos numero de puerto que usa SSL
	props.put("mail.smtp.socketFactory.port", "465");
        //clase que manejara el socket(ssl)
	props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        //indicamos que vamos a autentificarnos
	props.put("mail.smtp.auth", "true");
        //numero de puerto del servidor que vamos a usar
	props.put("mail.smtp.port", "465");
	Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(mail,password);
            }
	});
        try {
            //MimeMessage es una clase que implementa la clase abstracta Message
            Message message = new MimeMessage(session);
            //La dirección del emisor del mensaje
            message.setFrom(new InternetAddress(mail));
            //En funcion del tipo de receptor puede ser:(TO,CC,BCC)
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mailTo));
            //Asunto
            message.setSubject(asunto);
            //contenido
            message.setContent(mp);
            //Envio del mensaje
            Transport.send(message);
            
	} catch (MessagingException e) {
            throw new RuntimeException(e);
	}
    }
}

